package com.wss.common.wechat.task;


import com.wss.common.wechat.cache.WeChatCache;
import com.wss.common.wechat.util.ComponentAccessToken;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

/**
 * 每个小时执行一次，定时获取access_token
 */
@Service("accessTokenTimerTask")
@Lazy(false)
public class ComponentAccessTokenTimerTask {


	@Autowired
	private ComponentAccessToken componentAccessToken;

	private final Logger logger = Logger.getLogger(ComponentAccessTokenTimerTask.class);
	//@Scheduled(cron="0/5 * * * * ?")
	//@Scheduled(fixedRate =60*1000*60) //fixedDelay：当一次方法执行完毕之后，延迟多少毫秒再执行该方法。
	@Scheduled(fixedRate =60*1000*60)
	public void run() {

		//先进行三方平台授权令牌任务
		logger.info("componentAccessToken定时任务开始启动！！！");
		int times=0;
		while(times<60){
			logger.info("未获取到微信推送 COMPONENT_VERIFY_TICKET！ 任务等待 1 min");
			try {
				if(WeChatCache.getComponentVerifyTicket()!=null){
					componentAccessToken.run();
					logger.info("刷讯三方令牌已完成！！！");
					break;
				}else{
					times++;
					Thread.sleep(1000*60);
				}
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

		logger.info("componentAccessToken定时任务执行结束！！！");


		/**
		 *
		 logger.info("AccessToken定时任务开始启动！！！");
		 accessToken.run();
		 logger.info("AccessToken定时任务执行结束！！！");
		 */

	}
}
